#include <iostream>
#include <vector>


int main()
{
    // std::vector<int> vec = {1,2,3,4,5,6};
    // std::cout << vec.size() << std::endl;
    // for(int i = 0; i < vec.size(); i++)
    // {
    //     std::cout << vec[i] << std::endl;
    // }

    /* 迭代器 */
// #if 0
//     std::vector<int>::iterator ite = vec.begin();
// #else
//     auto ite = vec.begin();
// #endif;
//     auto ite_end = vec.end();

//     std::cout << *ite << std::endl;

//     for(auto item = vec.begin(); item != vec.end(); ite++)
//     {
//         std::cout << *item << std::endl;
//     }   

    // /* 初始化6个int元素，值为0 */
    // std::vector<int> vec(6);
    // std::cout << vec.capacity() << std::endl;
    // std::cout << vec.size() << std::endl;
    // for(auto item = vec.begin(); item != vec.end(); item++)
    // {
    //     std::cout << *item << std::endl;
    // }   
    std::vector<int> vec;

    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    vec.push_back(4);
    vec.push_back(5);
    std::cout << vec.capacity() << std::endl;
    std::cout << vec.size() << std::endl;
    for(auto item = vec.begin(); item != vec.end(); item++)
    {
        std::cout << *item << std::endl;
    } 

    vec.pop_back();
    /* 中间插入的方式 */
    vec.insert(vec.begin() + 1, 99);

    /* 删除指定位置的元素 */
    vec.erase(vec.begin() + 1);

    /* at()函数访问越界会抛出异常 */
    std::cout << vec.at(0) << std::endl;
    /* []重载访问越界不会抛出异常 */
    std::cout << vec[2] << std::endl;

    vec.resize(100);
    std::cout << vec.capacity() << std::endl;
    /* 缩小容量，减少多余的空间浪费 */
    vec.shrink_to_fit();
    std::cout << vec.capacity() << std::endl;
    return 0;
}